/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.com.gestionstock.vue;

import edu.com.gestionstock.controleur.*;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
 *
 * @author Gratien
 */
public class FenetrePrincipale extends JFrame
{

    //On charge tous les panneaux de l'application
    protected PanneauAfficheStock panneauAfficheStock = new PanneauAfficheStock();
    protected PanneauAjoutStock panneauAjoutStock = new PanneauAjoutStock();
    protected PanneauModifieStock panneauModifieStock = new PanneauModifieStock();
    protected PanneauRecherche panneauRechercheStock = new PanneauRecherche();
    protected PanneauAfficheClient panneauAfficheClient = new PanneauAfficheClient();
    protected PanneauAjoutClient panneauAjoutClient = new PanneauAjoutClient();
    protected PanneauModifieClient panneauModifieClient = new PanneauModifieClient();
    protected PanneauRechercheClient panneauRechercheClient = new PanneauRechercheClient();
    
    //Controleurs
    protected ControleurAfficheStock controleurAfficheStock = new ControleurAfficheStock(panneauAfficheStock);
    protected ControleurSupprimeStock controleurSupprimeStock = new ControleurSupprimeStock(panneauAfficheStock);
    protected ControleurRechercheStock controleurRechercheStock = new ControleurRechercheStock(panneauRechercheStock, controleurAfficheStock);
    protected ControleurAfficheClient controleurAfficheClient = new ControleurAfficheClient(panneauAfficheClient);
    protected ControleurRechercheClient controleurRechercheClient = new ControleurRechercheClient(panneauRechercheClient, controleurAfficheClient);
    protected ControleurModifieClient controleurModifieClient = new ControleurModifieClient(this);
    
    //Attribut de la classe
    public Container panneauPrincipal;
    private final JFrame fenetre = new JFrame("Gestionnaire du parc de Livre/DVD");
    private JPanel afficheCentre = new JPanel();
    private JMenuItem menuQuitter = new JMenuItem("Quitter", 'Q');
    private JMenuItem menuAjouterStock = new JMenuItem("Ajouter");
    private JMenuItem menuAfficherStock = new JMenuItem("Afficher");
    private JMenuItem menuModifierStock = new JMenuItem("Modifier");
    private JMenuItem menuSupprimerStock = new JMenuItem("Supprimer");
    private JMenuItem menuRechercherStock = new JMenuItem("Rechercher");
    private JMenuItem menuAfficherClient = new JMenuItem("Afficher");
    private JMenuItem menuAjouterClient = new JMenuItem("Ajouter");
    private JMenuItem menuModifierClient = new JMenuItem("Modifier");
    private JMenuItem menuSupprimerClient = new JMenuItem("Supprimer", new ImageIcon("images/delete.png"));
    private JMenuItem menuRechercherClient = new JMenuItem("Rechercher");

    public FenetrePrincipale()
    {
        fenetre.setSize(600, 400);
        //Placement de la fenetre ---> au milieu de l'écran
        fenetre.setLocationRelativeTo(null);

        JMenuBar barreMenu = new JMenuBar();
        fenetre.setJMenuBar(barreMenu);
        JMenu menuFichier = new JMenu("Fichier");
        menuFichier.setMnemonic('F');
        menuQuitter.setAccelerator(KeyStroke.getKeyStroke(
                KeyEvent.VK_Q, ActionEvent.ALT_MASK));
        menuFichier.add(menuQuitter);
        barreMenu.add(menuFichier);





        JMenu menuStock = new JMenu("Stock");
        menuStock.setMnemonic('S');
        barreMenu.add(menuStock);
        menuStock.add(menuAfficherStock);
        menuAfficherStock.setAccelerator(KeyStroke.getKeyStroke(
                KeyEvent.VK_1, ActionEvent.ALT_MASK));
        menuStock.add(menuAjouterStock);
        menuAjouterStock.setAccelerator(KeyStroke.getKeyStroke(
                KeyEvent.VK_A, ActionEvent.ALT_MASK));
        menuStock.add(menuModifierStock);
        menuModifierStock.setAccelerator(KeyStroke.getKeyStroke(
                KeyEvent.VK_E, ActionEvent.ALT_MASK));
        menuStock.add(menuSupprimerStock);
        menuSupprimerStock.setAccelerator(KeyStroke.getKeyStroke(
                KeyEvent.VK_D, ActionEvent.ALT_MASK));
        menuStock.add(menuRechercherStock);
        menuRechercherStock.setAccelerator(KeyStroke.getKeyStroke(
                KeyEvent.VK_R, ActionEvent.ALT_MASK));

        JMenu menuClient = new JMenu("Client");
        menuClient.setMnemonic('C');
        barreMenu.add(menuClient);
        menuClient.add(menuAfficherClient);
        menuAfficherClient.setAccelerator(KeyStroke.getKeyStroke(
                KeyEvent.VK_2, ActionEvent.ALT_MASK));
        menuClient.add(menuAjouterClient);
        menuClient.add(menuModifierClient);
        menuClient.add(menuSupprimerClient);
        menuClient.add(menuRechercherClient);

        JMenu menuLocation = new JMenu("Location");
        menuLocation.setMnemonic('L');
        barreMenu.add(menuLocation);

        panneauPrincipal = fenetre.getContentPane();
        panneauPrincipal.setLayout(new BorderLayout(5, 5));

        //On ajoute les differents panneaux dans un JPanel
        //Il ne peut y avoir qu'un seul élément dans le JFrame CENTER, c'est pour cette raison qu'on ne placera que le JPanel qui contient les differents panneaux
        //Le premier panneau ajouté sera le seul visible au lancement du programme
        afficheCentre.add(panneauAfficheStock);
        afficheCentre.add(panneauAjoutStock);
        afficheCentre.add(panneauModifieStock);
        afficheCentre.add(panneauRechercheStock);
        afficheCentre.add(panneauAfficheClient);
        afficheCentre.add(panneauAjoutClient);
        afficheCentre.add(panneauModifieClient);
        afficheCentre.add(panneauRechercheClient);

        //On place ce JPanel dans la zone centrale de la fenetre principale
        panneauPrincipal.add(afficheCentre, BorderLayout.CENTER);


        //On affiche la fenetre
        fenetre.setVisible(true);

        fenetre.addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent evt)
            {
                if ( JOptionPane.showConfirmDialog(fenetre,
                        "Voulez-vous vraiment quitter ?", "Quitter",
                        JOptionPane.YES_NO_OPTION)
                        == JOptionPane.YES_OPTION )
                {
                    System.exit(0);
                }
            }
        });

    }

    public PanneauAjoutStock getPanneauAjoutStock()
    {
        return panneauAjoutStock;
    }

    public void setPanneauAjoutStock(PanneauAjoutStock panneauAjoutStock)
    {
        this.panneauAjoutStock = panneauAjoutStock;
    }

    public PanneauRecherche getPanneauRechercheStock()
    {
        return panneauRechercheStock;
    }

    public void setPanneauRechercheStock(PanneauRecherche panneauRechercheStock)
    {
        this.panneauRechercheStock = panneauRechercheStock;
    }

    public PanneauAfficheStock getPanneauAfficheStock()
    {
        return panneauAfficheStock;
    }

    public void setPanneauAfficheStock(PanneauAfficheStock panneauAfficheStock)
    {
        this.panneauAfficheStock = panneauAfficheStock;
    }

    public PanneauRechercheClient getPanneauRechercheClient()
    {
        return panneauRechercheClient;
    }

    public void setPanneauRechercheClient(PanneauRechercheClient panneauRechercheClient)
    {
        this.panneauRechercheClient = panneauRechercheClient;
    }

    public PanneauAjoutClient getPanneauAjoutClient()
    {
        return panneauAjoutClient;
    }

    public void setPanneauAjoutClient(PanneauAjoutClient panneauAjoutClient)
    {
        this.panneauAjoutClient = panneauAjoutClient;
    }

    public PanneauAfficheClient getPanneauAfficheClient()
    {
        return panneauAfficheClient;
    }

    public void setPanneauAfficheClient(PanneauAfficheClient panneauAfficheClient)
    {
        this.panneauAfficheClient = panneauAfficheClient;
    }

    public ControleurSupprimeStock getControleurSupprimeStock()
    {
        return controleurSupprimeStock;
    }

    public ControleurAfficheStock getControleurAfficheStock()
    {
        return controleurAfficheStock;
    }

    public JMenuItem getMenuQuitter()
    {
        return menuQuitter;
    }

    public void setMenuQuitter(JMenuItem menuQuitter)
    {
        this.menuQuitter = menuQuitter;
    }

    public JMenuItem getMenuAjouterStock()
    {
        return menuAjouterStock;
    }

    public void setMenuAjouterStock(JMenuItem menuAjouterStock)
    {
        this.menuAjouterStock = menuAjouterStock;
    }

    public JMenuItem getMenuAfficherStock()
    {
        return menuAfficherStock;
    }

    public void setMenuAfficherStock(JMenuItem menuAfficherStock)
    {
        this.menuAfficherStock = menuAfficherStock;
    }

    public JMenuItem getMenuModifierStock()
    {
        return menuModifierStock;
    }

    public void setMenuModifierStock(JMenuItem menuModifierStock)
    {
        this.menuModifierStock = menuModifierStock;
    }

    public JMenuItem getMenuSupprimerStock()
    {
        return menuSupprimerStock;
    }

    public void setMenuSupprimerStock(JMenuItem menuSupprimerStock)
    {
        this.menuSupprimerStock = menuSupprimerStock;
    }

    public JMenuItem getMenuRechercherStock()
    {
        return menuRechercherStock;
    }

    public void setMenuRechercherStock(JMenuItem menuRechercherStock)
    {
        this.menuRechercherStock = menuRechercherStock;
    }

    public JMenuItem getMenuAjouterClient()
    {
        return menuAjouterClient;
    }

    public void setMenuAjouterClient(JMenuItem menuAjouterClient)
    {
        this.menuAjouterClient = menuAjouterClient;
    }

    public JMenuItem getMenuModifierClient()
    {
        return menuModifierClient;
    }

    public void setMenuModifierClient(JMenuItem menuModifierClient)
    {
        this.menuModifierClient = menuModifierClient;
    }

    public JMenuItem getMenuSupprimerClient()
    {
        return menuSupprimerClient;
    }

    public void setMenuSupprimerClient(JMenuItem menuSupprimerClient)
    {
        this.menuSupprimerClient = menuSupprimerClient;
    }

    public JMenuItem getMenuRechercherClient()
    {
        return menuRechercherClient;
    }

    public void setMenuRechercherClient(JMenuItem menuRechercherClient)
    {
        this.menuRechercherClient = menuRechercherClient;
    }

    public JMenuItem getMenuAfficherClient()
    {
        return menuAfficherClient;
    }

    public void setMenuAfficherClient(JMenuItem menuAfficherClient)
    {
        this.menuAfficherClient = menuAfficherClient;
    }

    public ControleurRechercheStock getControleurRechercheStock()
    {
        return controleurRechercheStock;
    }

    public ControleurAfficheClient getControleurAfficheClient()
    {
        return controleurAfficheClient;
    }

    public ControleurRechercheClient getControleurRechercheClient()
    {
        return controleurRechercheClient;
    }

    public PanneauModifieStock getPanneauModifieStock()
    {
        return panneauModifieStock;
    }

    public PanneauModifieClient getPanneauModifieClient()
    {
        return panneauModifieClient;
    }

    public ControleurModifieClient getControleurModifieClient()
    {
        return controleurModifieClient;
    }
    
    
     public void masqueTousLesPanneaux()
    {
        //Pour eviter la superposition des panneaux, on les masques tous avant de les afficher
        getPanneauAfficheStock().setVisible(false);
        getPanneauRechercheStock().setVisible(false);
        getPanneauAjoutStock().setVisible(false);
        getPanneauModifieStock().setVisible(false);
        
        getPanneauAfficheClient().setVisible(false);
        getPanneauAjoutClient().setVisible(false);
        getPanneauRechercheClient().setVisible(false);
    }
       
}
